/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bolao.ui.beans;

import bolao.dominio.seguranca.Grupo;
import bolao.dominio.seguranca.Usuario;
import bolao.service.SecurityService;
import bolao.util.JsfUtil;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.model.DualListModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * @author 002824992500
 */
@ManagedBean
@ViewScoped
public class GrupoJsfBean extends BaseCRUDJSFBean {

    private static final Logger log = LoggerFactory.getLogger(GrupoJsfBean.class);

    @EJB
    private SecurityService securityService;

    private DualListModel<Usuario> usuarios = new DualListModel<Usuario>();

    public DualListModel<Usuario> getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(DualListModel<Usuario> usuarios) {
        this.usuarios = usuarios;
        Grupo grupo = getGrupo();
        grupo.setUsuarios(usuarios.getTarget());
        setGrupo(grupo);
    }

    public Grupo getGrupo() {
        return getObjSelecionado();
    }

    public void setGrupo(Grupo grupo) {
        setObjSelecionado(grupo);
    }

    private List<Grupo> grupos = new ArrayList<Grupo>();

    public List<Grupo> getGrupos() {
        return grupos;
    }

    public void setGrupos(List<Grupo> grupos) {
        this.grupos = grupos;
    }

    /** Creates a new instance of ColaboradorJSFBean */
    public GrupoJsfBean() {
    }

    @Override
    public void setup() {
        try {
            setPaginaForm("form_grupo");
            setPaginaListagem("list_grupo");
            setCrudClass(Grupo.class);

            renovarTabela();            
            JsfUtil.configPickList(getCrudService().findAll(Usuario.class), getGrupo().getUsuarios(), this.usuarios);
        } catch (Exception e) {
            error("Erro na inicialização: " + e.getMessage());
            log.error("Erro na inicialização: " + e.getMessage(), e);
        }

    }

    @Override
    protected void renovarTabela() {
        this.grupos = getCrudService().findAll(Grupo.class);
    }

    @Override
    protected Object salvaObjeto(Object o) {        
        return securityService.salvaGrupo(o);
    }


}
